import torque.generated.Bonus;
import torque.generated.InventairePeer;
import torque.generated.Objet;
import torque.generated.ObjetPartie;
import torque.generated.ObjetPartiePeer;
import torque.generated.ObjetPeer;
import torque.generated.Partie;
import torque.generated.PartiePeer;
import torque.generated.Player;
import torque.generated.PlayerPeer;
import torque.generated.TableCaracteristique;
import torque.generated.TableCaracteristiquePeer;
import torque.generated.Vaisseau;
import torque.generated.VaisseauPartie;
import torque.generated.VaisseauPartiePeer;
import torque.generated.VaisseauPeer;
import torque.generated.map.VaisseauMapBuilder;
import java.lang.Math;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.apache.torque.Torque;
import org.apache.torque.TorqueException;

@SuppressWarnings("unused")
public class menu {
	
	public final static String TORQUE_PROPS = new String("./torque-3.3/Torque.properties");
	Grille echequier;
	
//	public enum direction {haut,bas,gauche,droite}
	public static void main(String Args[]) throws Exception {
		Torque.init(TORQUE_PROPS);
		new menu();
	}

	public menu() throws Exception {
	int choix;
	do {
		System.out.println();
		System.out.println("      **************************************");
		System.out.println("      *          Star Wars                 *");
		System.out.println("      **************************************");
		System.out.println("      * 1 - Nouvelle Partie                *");
		System.out.println("      * 2 - Charger une Partie             *");
		System.out.println("      * 3 - Supprimer une Partie           *");
		System.out.println("      * 4 - Supprimer un vaisseau          *");
		System.out.println("      * 5 - Créer un objet                 *");	
		System.out.println("      * 6 - Créer un vaisseau              *");	
		System.out.println("      *                                    *");	
		System.out.println("      *                                    *");	
		System.out.println("      *                                    *");
		System.out.println("      * 0- Quitter                         *");
		System.out.println("      **************************************");
		System.out.println();
		System.out.print("      Votre Choix : ");
		choix = IO.lireEntier();
		switch (choix) {
		case 1: {
			menu.nouvellePartie();
			break;
		}
		case 2: {
			menu.chargerPartie();
			break;
		}
		case 3: {
			menu.supprimerPartie();
			break;
		}
		case 4: {
			menu.supprimerVaisseau();
			break;
		}
		case 5: {
			menu.creerObjet();
			break;
		}
		case 6: {
			menu.creerVaisseau();
			break;
		}
		default:
			break;
		}

		System.out.println();
	} while (choix != 0);

}
	private static void creerObjet() throws Exception {
		boolean objExiste=false;
		String nomObj;
		int durabilite = 0;
		do{			
			System.out.println("choisissez un nom pour l'objet");

			nomObj= IO.lireChaine();
			ObjetPeer.exist(nomObj);
		}while(objExiste);
		System.out.println("Caractéristique du bonus");
		List<TableCaracteristique> lCaract = TableCaracteristiquePeer.doSelectAll();
		int i=1;
		for(TableCaracteristique caract : lCaract){			
			System.out.println(i+" : "+caract.getCaracteristique());
			i++;
		}
		System.out.println("Entrez le numéro de la Caractéristique");
		int numCaract= IO.lireEntier();
		TableCaracteristique caract = lCaract.get(numCaract-1);
		System.out.println("Valeur du bonus ou du malus");
		int valBonus = IO.lireEntier();
		do{
			System.out.println("Saisissez la durabilité de l'objet (si objet utilisable) sinon 0 pour un équipement");
			durabilite=IO.lireEntier();
		}while(durabilite<0);
		Objet obj = ObjetPeer.nouvelObjet(nomObj,durabilite);
		obj.addBonus(valBonus, caract.getCaracteristique());
	}

	public static void nouvellePartie() throws Exception{
		String player1,player2,nomPartie;
		int taille;
		System.out.println("choisissez un nom pour la partie");
		nomPartie = IO.lireChaine();
		System.out.println("choisissez un nom de joueur pour le player1");
		player1 = IO.lireChaine();
		System.out.println("choisissez un nom de joueur pour le player2");
		player2 = IO.lireChaine();
		System.out.println("choisissez une taille d'echiquier (AxA)");
		taille = IO.lireEntier();		

		
		int choix;
		String vaisseau1 = null,vaisseau2 = null;
		String playerName;
		for(int i=0;i<2;i++){
				if(i==0){
					playerName=player1;
				}else{
					playerName=player2;
				}
				System.out.println();
				System.out.println("      **************************************");
				System.out.println("      *          Star Wars                 *");
				System.out.println("      *    Choix du vaisseau de "+playerName+"   *");
				System.out.println("      **************************************");
				System.out.println("      * 1 - Choisir un vaisseau            *");
				System.out.println("      * 2 - Creer un vaisseau              *");
				System.out.println("      *                                    *");
				System.out.println("      * 0- Quitter                         *");
				System.out.println("      **************************************");
				System.out.println();
				System.out.print("      Votre Choix : ");
				choix = IO.lireEntier();
		
				switch (choix) {
				case 1: {
					if(i==0){
						do{
							vaisseau1 = menu.choixVaisseau();
						}while(vaisseau1==vaisseau2);
					}else{
						do{
							vaisseau2 = menu.choixVaisseau();
						}while(vaisseau1==vaisseau2);
					}
					break;
				}
				case 2: {
					if(i==0){
						vaisseau1 = menu.creerVaisseau();
					}else{					
						vaisseau2 = menu.creerVaisseau();
					}
					break;
				}
				default:
					break;
				}
	
				System.out.println();
		}
		Vaisseau v1 = VaisseauPeer.getV(vaisseau1);
		Vaisseau v2 = VaisseauPeer.getV(vaisseau2);
		
		Player p1 = PlayerPeer.nouveauPlayer(player1,v1,v1.getEnergie());
		Player p2 = PlayerPeer.nouveauPlayer(player2,v2,v2.getEnergie());
		
		Partie partie = PartiePeer.nouvellePartie(nomPartie,taille,p1,p2);
		
		int numR;
		numR = random12();
		if(numR==1){
			VaisseauPartiePeer.ajoutV(partie, v1, 0, 0);
			VaisseauPartiePeer.ajoutV(partie, v2, taille-1, taille-1);
		}else{
			VaisseauPartiePeer.ajoutV(partie, v2, 0, 0);
			VaisseauPartiePeer.ajoutV(partie, v1, taille-1, taille-1);
		}
		partie.insertionObjets(10);
		int numP;
		numP = random12();
		if(numP==1){
			partie.modifTurn(false);
		}else{
			partie.modifTurn(true);
		}
		menu.lancerPartie(partie);
		
		
	}
	public static void chargerPartie() throws Exception{
		List<Partie> pList= PartiePeer.doSelectAll();
		int i = 1;
		if(pList.size()>0){		
			for(Partie partie : pList){
				System.out.print(i+"/ ");
				System.out.println(partie.getNom());
				i++;
			}
			int numP;
			System.out.println("choisissez une partie à charger");
			do{
				numP = IO.lireEntier();
			}while(numP<0 || numP>i);
			String nomP = pList.get(numP-1).getNom() ;
			menu.lancerPartie(PartiePeer.getP(nomP));
		}else{
			System.out.println("aucune partie à charger");
		}
	}

	public static void supprimerPartie() throws Exception{
		List<Partie> pList= PartiePeer.doSelectAll();
		for(Partie partie : pList){
			System.out.println(partie.getNom());
		}
		String nomP ;
		System.out.println("choisissez une partie à supprimer");
		nomP = IO.lireChaine();
		PartiePeer.deleteP(nomP);
		
	}
	public static String choixVaisseau() throws Exception{
		int i=1;
		List<Vaisseau> vList= VaisseauPeer.doSelectAll();
		if(vList==null){
			return(menu.creerVaisseau());
		}
		for(Vaisseau vaisseau : vList){
			System.out.print(i+"/ ");
			System.out.println(vaisseau.getNom());
			i++;
		}
		System.out.println("choisissez le nom d'un vaisseau");
		int numV;
		do{
			numV = IO.lireEntier();	
		}while(numV<0 || numV>i);
		String nomV = vList.get(numV-1).getNom();
		return(nomV);
	}
	public static String creerVaisseau() throws Exception{
		String nomV;
		int attaque,degats,cdf,energie,somme;
		boolean existe = false;
		do{
		System.out.println("choisissez un nom de vaisseau");
		nomV = IO.lireChaine();
		existe = VaisseauPeer.exist(nomV);
		if(existe){
			System.out.println("Le nom de vaisseau que vous avez entré est déjà utilisé");
		}
		}while(existe);
		
		do{
			System.out.println("vous allez devoir saisir les caractéristiques du vaisseau dont la somme doit être égale à 40");
			do{
				System.out.println("valeur pour l'attaque");
				attaque = IO.lireEntier();
			}while(attaque<0 && attaque>40);
			do{
				System.out.println("valeur pour les dégats");
				degats = IO.lireEntier();
			}while(degats<0 && degats>40);
			do{		
				System.out.println("valeur pour le champ de force");
				cdf = IO.lireEntier();
			}while(cdf<0 && cdf>40);
			do{			
				System.out.println("valeur pour l'energie");
				energie = IO.lireEntier();
			}while(energie<0 && energie>40);
			
			somme = attaque+degats+cdf+energie;
			
		}while(somme!=40);// 40 a passer en parametre plus tard
		energie = energie*10;
		Vaisseau v1 = VaisseauPeer.nouveauVaisseau(nomV, attaque, degats, cdf, energie);
		
		return(nomV);
	}
	public static void supprimerVaisseau() throws Exception{
		int numV;
		int i =1;
		System.out.println("choisissez un nom de vaisseau à supprimer");
		List<Vaisseau> vList= VaisseauPeer.doSelectAll();
		if(vList.size()>0){
			for(Vaisseau vaisseau : vList){
				System.out.println(i+"/ ");
				System.out.println(vaisseau.getNom());
			}		
			numV = IO.lireEntier();
			
			VaisseauPeer.deleteV(vList.get(numV).getNom());
		}else{
			System.out.println("pas de vaisseau à supprimer");
		}
		
	}
	public static int random12(){
		int max,mini;		
		max=2;		
		mini=1;	
		return((int)(Math.random()*( max - mini + 1 )) + mini);
	}
	public static void lancerPartie(Partie partie) throws Exception{
		boolean endGame=false;
		boolean endTurn=false;
		boolean attaque = false;
		boolean intercepter = false;
		boolean inventaire = false;
		boolean deplacement = false;
		boolean mort = false;
		boolean quitter = false;
		int choix;
		int numP;
		boolean turn = partie.getTurn();
		if(turn){
			numP=1;
		}else{
			numP=2;
		}
		int pa =0 ;	
		Grille echequier=new Grille(partie.getTaille());
		echequier.setVisible(true);
//		while(pa==0)
//		echequier2.refresh(partie.getEchequier());
		do{
			do{
	
				Player p = PlayerPeer.rechPlayer(numP, partie);	
				pa=p.getPointdaction();
				VaisseauPartie position2= VaisseauPartiePeer.position2(partie,p.getVaisseau());
				if(VaisseauPartiePeer.combatPossible(position2) && pa>=4){
					attaque = true;
				}else{
					attaque=false;
				}
				if(ObjetPartiePeer.contientObjet(position2) && pa >=1){
					intercepter = true;
				}else{
					intercepter = false;
				}
				List<Objet> objList1 = InventairePeer.objetUtilisable(partie,p.getVaisseau());
				List<Objet> objList2 = InventairePeer.objetEquipable(partie,p.getVaisseau());
				boolean utilisable = false;
				boolean equipable = false;
				if(objList1.size()>0){
					utilisable=true;
				}				
				if(objList2.size()>0){
					equipable=true;
				}
				
				inventaire = InventairePeer.nonVide(partie,p.getVaisseau());
				deplacement = deplacementPossible(p,position2);
				echequier.refresh(partie.getEchequier());
				System.out.println();
				System.out.println("      **************************************");
				System.out.println("      *          Star Wars                 *");
				System.out.println("      *    Tour  du vaisseau du joueur "+p.getNom()+"   *");
				System.out.println("      **************************************");
				if(deplacement){
					System.out.println("      * 1 - Deplacement                    *");
				}
				if(attaque){
					System.out.println("      * 2 - Attaque                        *");
				}
				if(intercepter){
					System.out.println("      * 3 - Intercepter                    *");
				}
				if(inventaire){
					if(utilisable){
						System.out.println("      * 4 - Utiliser                       *");
					}
					if(equipable){
						System.out.println("      * 5 - Equiper                        *");
					}
				}
				System.out.println("      * 6 - Passer son tour                *");
				System.out.println("      *                                    *");	
				System.out.println("      * 0- Quitter                         *");
				System.out.println("      **************************************");
				System.out.println();
				System.out.print("      Votre Choix : ");
				
				choix = IO.lireEntier();
				
				switch (choix) {
				case 1: {
					if(!deplacement){
						break;
					}else{
		
						deplacement(p,partie);
					}
					break;
				}
				case 2: {
					if(!attaque){
						break;
					}else{
						mort = attaque(p,partie);
						if(mort){
							endTurn=true;
							endGame=true;
						}
					}
					
					break;
				}
				case 3: {
					if(!intercepter){
						break;
					}else{
						intercepter(p,partie);
					}
					break;
				}
				case 4: {
					if(!inventaire){
						break;
					}else{
						if(utilisable){
							utiliser(p,partie);
						}
					}
					break;
				}	
				case 5: {
					if(!inventaire){
						break;
					}else{
						if(equipable){
							equiper(p,partie);
						}
					}
					break;
				}
				case 6: {
					endTurn = true;
					break;
				}	
				case 0: {
					endGame = true;
					endTurn = true;
					quitter= true;
					break;
				}
				default:
					endGame=true;
					break;
				}
				pa=p.getPointdaction();
				System.out.print("pa restant : ");
				System.out.println(pa);
				if(pa==0){
					endTurn=true;
				}
				echequier.refresh(partie.getEchequier());
				
				List<Objet> objList = InventairePeer.objetUtilisable(partie,p.getVaisseau());
				if(objList.size()>0){
					for(Objet obj : objList){
						obj.setDurabilite(obj.getDurabilite()-1);
					}
				}

			}while(!endTurn);
			System.out.println("======== Fin du tour ========");
			Player player = PlayerPeer.rechPlayer(numP, partie);
			if(!quitter){
				player.setPda(6);
			}
			if(numP==1){
				numP=2;
				partie.modifTurn(true);
			}
			else{
				numP=1;
				partie.modifTurn(false);
			}
			endTurn=false;
			
		}while(!endGame);
		echequier.setVisible(false);
	}

	private static boolean deplacementPossible(Player p,VaisseauPartie position2) throws TorqueException {
		if (VaisseauPartiePeer.combatPossible(position2)) {
			return(p.getPointdaction()-4>=0);
		}else{
			return(p.getPointdaction()-1>=0);
		}
	}


	private static void deplacement(Player p, Partie part) throws  Exception {
		int choix;
		int nextX=0;
		int nextY=0;
		int paDeplacement = 1;
		int pa = p.getPointdaction();

			List<VaisseauPartie> nextPos2;
			VaisseauPartie position2 = VaisseauPartiePeer.position2(part,p.getVaisseau());
			
			System.out.println();
			System.out.println("      **************************************");
			System.out.println("      *          Star Wars                 *");
			System.out.println("      *    Tour  du vaisseau du joueur "+p.getNom()+"   *");
			System.out.println("      *             DEPLACEMENT            *");
			System.out.println("      **************************************");
			if(checkDep("Haut",position2,part.getTaille())){
				System.out.println("      * 1 - Haut                           *");
			}
			if(checkDep("Bas",position2,part.getTaille())){
				System.out.println("      * 2 - Bas                            *");
			}
			if(checkDep("Gauche",position2,part.getTaille())){
				System.out.println("      * 3 - Gauche                         *");
			}
			if(checkDep("Droite",position2,part.getTaille())){
				System.out.println("      * 4 - Droite                         *");
			}
			System.out.println("      *                                    *");		
			System.out.println("      * 0- Retour                          *");
			System.out.println("      **************************************");
			System.out.println();
			System.out.print("      Votre Choix : ");
			choix = IO.lireEntier();
			switch(choix) {
			//TODO catcher les exceptions !!!
			case 1: {
				if (checkDep("Haut",position2,part.getTaille())){
					nextX=position2.getX();
					nextY=position2.getY()-1;
					nextPos2 = VaisseauPartiePeer.getCases(part,nextX,nextY);
					if(VaisseauPartiePeer.combatPossible(position2)){
						System.out.println("Vous fuyez un vaisseau (coût en PA : 4) ");
						paDeplacement = 4;
					}
					else if(nextPos2!=null && nextPos2.size()>0) {
							System.out.println("Case avec un vaisseau, combat imminent ! ");
					} else {
						
					}
				}else {
					System.out.println("Deplacement impossible");
					paDeplacement = 0;
					
				}

				break;
			}
			case 2:{
				if (checkDep("Bas",position2,part.getTaille())){
					nextX=position2.getX();
					nextY=position2.getY()+1;
					nextPos2 = VaisseauPartiePeer.getCases(part,nextX,nextY);
					if(VaisseauPartiePeer.combatPossible(position2)){
						System.out.println("Vous fuyez un vaisseau (coût en PA : 4) ");
						paDeplacement = 4;
					}
					else if(nextPos2!=null && nextPos2.size()>0) {
							System.out.println("Case avec un vaisseau, combat imminent ! ");
					} else {
						
					}
				}else {
					System.out.println("Deplacement impossible");
					paDeplacement = 0;
				}

				break;
			}
			case 3: {
				if (checkDep("Gauche",position2,part.getTaille())){
					nextX=position2.getX()-1;
					nextY=position2.getY();
					nextPos2 = VaisseauPartiePeer.getCases(part,nextX,nextY);
					if(VaisseauPartiePeer.combatPossible(position2)){
						System.out.println("Vous fuyez un vaisseau (coût en PA : 4) ");
						paDeplacement = 4;
					}
					else if(nextPos2!=null && nextPos2.size()>0) {
							System.out.println("Case avec un vaisseau, combat imminent ! ");
					} else {
						
					}
				}else {
					System.out.println("Deplacement impossible");
					paDeplacement = 0;
				}

				break;
			}
			case 4: {

				if (checkDep("Droite",position2,part.getTaille())){
					nextX=position2.getX()+1;
					nextY=position2.getY();
					nextPos2 = VaisseauPartiePeer.getCases(part,nextX,nextY);
					if(VaisseauPartiePeer.combatPossible(position2)){
						System.out.println("Vous fuyez un vaisseau (coût en PA : 4) ");
						paDeplacement = 4;
					}
					else if(nextPos2!=null && nextPos2.size()>0) {
							System.out.println("Case avec un vaisseau, combat imminent ! ");
					} else {
						
					}
				}else {
					System.out.println("Deplacement impossible");
					paDeplacement = 0;
				}
		
				break;
			}
			case 0: {
	
				break;
			}
			default: {
				
				break;
			}
		    }
			
			p.setPda(p.getPointdaction()-paDeplacement);
			
			if(reussite()){
				Vaisseau v = p.getVaisseau();
				//v.changeCases(part,nextX,nextY);
				VaisseauPartiePeer.position2(part, v).changeCases2(nextX,nextY);
				System.out.println("Nouvelle position : \n");
				System.out.println("X : ");
				System.out.println(nextX);
				System.out.println("Y : ");
				System.out.println(nextY);
			}else{
				System.out.println("Echec du déplacement...");
			}

	}
	
	private static boolean checkDep(String dir, VaisseauPartie vp,int taille) {
		if(dir=="Haut"){
			return(!(vp.getY()-1<0));	
		}else if(dir=="Bas"){
			return(!(vp.getY()+1>taille-1));	
		}else if(dir=="Gauche"){
			return(!(vp.getX()-1<0));
		}else if(dir=="Droite"){
			return(!(vp.getX()+1>taille-1));	
		}else{
			return(false);
		}
	}


	private static boolean attaque(Player p, Partie part) throws  Exception {
	
		VaisseauPartie position2 = VaisseauPartiePeer.position2(part,p.getVaisseau());
		System.out.println();
		System.out.println("      **************************************");
		System.out.println("      *          Star Wars                 *");
		System.out.println("      *    Tour  du vaisseau du joueur "+p.getNom()+"   *");
		System.out.println("      *                ATTAQUE             *");
		System.out.println("      **************************************");
		System.out.println("      *                                    *");			
		System.out.println("      *                                    *");		
		System.out.println("      **************************************");
		System.out.println();
		Vaisseau vaisseauEnnemi = position2.autreVaisseau();
		Vaisseau vaisseauJoueur =  p.getVaisseau();

		int bonusAtk;
		int bonusDef;
		int atk=0;
		int cdf=0;
		int deg=0;

		atk = vaisseauJoueur.getAttaque()*d3() + calculBonus(vaisseauJoueur,"attaque",part);
		cdf = vaisseauEnnemi.getChampdeforce()*d3() + calculBonus(vaisseauEnnemi,"cdf",part);
		Player ennemi =vaisseauEnnemi.getPlayer(part);
		System.out.println("Attaquant à "+atk+" d'attaque" );
		System.out.println("Defenseur à "+cdf+" de champ de force" );
		if(atk>cdf && reussite()){
			System.out.println("L'attaquant a plus d'attaque que le champ de force du defenseur");
			deg = vaisseauJoueur.getDegats()*d3() + calculBonus(vaisseauJoueur,"degats",part);
			System.out.println("L'attaquant inflige "+deg+" de dégats");
			System.out.println("pdv de l'ennemi avant attaque");
			System.out.println(ennemi.getPointdevie());
			ennemi.setPdvie(ennemi.getPointdevie()-deg);			
		}else{
			System.out.println("Attaque failed !");
		}
		System.out.println("pdv de l'ennemi après attaque");
		System.out.println(ennemi.getPointdevie());		
		p.setPda(p.getPointdaction()-4);
		
		if(ennemi.getPointdevie()<=0){
			System.out.println(ennemi.getNom()+" a perdu");
			PartiePeer.doDelete(part);//TODO supprimer tous les liens !!!!
			return true;
		}else{
			return false;
		}
	}
	private static void utiliser(Player p, Partie part) throws  Exception {

		String nomObj;
		VaisseauPartie position2 = VaisseauPartiePeer.position2(part,p.getVaisseau());
		System.out.println();
		System.out.println("      **************************************");
		System.out.println("      *          Star Wars                 *");
		System.out.println("      *    Tour  du vaisseau du joueur "+p.getNom()+"   *");
		System.out.println("      *              UTILISER              *");
		System.out.println("      **************************************");
		System.out.println("      *                                    *");			
		System.out.println("      *                                    *");		
		System.out.println("      **************************************");
		System.out.println();
		if(reussite()){
			List<Objet> objList = InventairePeer.objetUtilisable(part,p.getVaisseau());
			int i=1;
			if(objList.size()>0){
				for(Objet obj : objList){
					System.out.print(i+"/ ");
					i++;
					System.out.println("Nom de l'ojet : "+obj.getNom()+" ");
					System.out.println("Bonus : "+((Bonus)obj.getBonuss().get(0)).getCaracteristique() +" Valeur : "+((Bonus)obj.getBonuss().get(0)).getBonus()+" ");
				}
				System.out.println("Saisissez le nom de l'objet");
				int numObj;
				do{
					numObj = IO.lireEntier();
				}while(numObj<0 || numObj>i);
				nomObj = objList.get(numObj-1).getNom();
				Objet obj = ObjetPeer.getObjet(nomObj);
				InventairePeer.switchUtilisation(obj,part,p.getVaisseau());
				p.setPda(p.getPointdaction()-1);
			}else{
				System.out.println("Il n'y a pas d'objet utilisable");
			}		
		}else{
			System.out.println("Echec de l'utilisation");
		}
	}
	private static void equiper(Player p, Partie part) throws  Exception {

		String nomObj;
		VaisseauPartie position2 = VaisseauPartiePeer.position2(part,p.getVaisseau());
		System.out.println();
		System.out.println("      **************************************");
		System.out.println("      *          Star Wars                 *");
		System.out.println("      *    Tour  du vaisseau du joueur "+p.getNom()+"   *");
		System.out.println("      *               EQUIPER              *");
		System.out.println("      **************************************");
		System.out.println("      *                                    *");			
		System.out.println("      *                                    *");		
		System.out.println("      **************************************");
		System.out.println();
		if(reussite()){
			List<Objet> objList = 	InventairePeer.objetEquipable(part,p.getVaisseau());
			int i=1;
			if(objList.size()>0){
				for(Objet obj : objList){
					System.out.print(i+"/ ");
					i++;
					System.out.println("Nom de l'ojet : "+obj.getNom()+" ");
					System.out.println("Bonus : "+((Bonus)obj.getBonuss().get(0)).getCaracteristique() +" Valeur : "+((Bonus)obj.getBonuss().get(0)).getBonus()+" ");
				} 
				System.out.println("Saisissez le nom de l'objet");
				int numObj;
				do{
					numObj = IO.lireEntier();
				}while(numObj<0 || numObj>i);
				nomObj = objList.get(numObj-1).getNom();
				Objet obj = ObjetPeer.getObjet(nomObj);
				InventairePeer.switchUtilisation(obj,part,p.getVaisseau());
				p.setPda(p.getPointdaction()-1);
			}else{
				System.out.println("Il n'y a pas d'objet equipable");
			}
		}else{
			System.out.println("Echec de l'equipement");
		}
	}
	private static void intercepter(Player p, Partie part) throws  Exception {
		VaisseauPartie position2 = VaisseauPartiePeer.position2(part,p.getVaisseau());
		System.out.println();
		System.out.println("      **************************************");
		System.out.println("      *          Star Wars                 *");
		System.out.println("      *    Tour  du vaisseau du joueur "+p.getNom()+"   *");
		System.out.println("      *            INTERCEPTER             *");
		System.out.println("      **************************************");
		System.out.println("      *                                    *");			
		System.out.println("      *                                    *");		
		System.out.println("      **************************************");
		System.out.println();
		if(reussite()){
			Objet obj = ObjetPartiePeer.getObjet(part,position2.getX(),position2.getY());
			System.out.println("Nom de l'ojet : "+obj.getNom()+" ");
			System.out.println("Bonus : "+((Bonus)obj.getBonuss().get(0)).getCaracteristique() +" Valeur : "+((Bonus)obj.getBonuss().get(0)).getBonus()+" ");
			position2.ramasser();
			p.setPda(p.getPointdaction()-1);
		}else{
			System.out.println("Echec de l'interception");
		}
		
	}
	private static boolean reussite(){
		Random randomGen = new Random();
		int nbRand = randomGen.nextInt(100)+1;
		System.out.print("jet du dé de 100 : ");
		System.out.println(nbRand);
		if(nbRand>80){
			return false;
		}else{
			return true;
		}		
	}
	private static int d3(){
		Random randomGen = new Random();
		int nbRand = randomGen.nextInt(3)+1;
		System.out.print("jet du dé de 3 : ");
		System.out.println(nbRand);
		return nbRand;
	}
	@SuppressWarnings("unchecked")
	private static int calculBonus(Vaisseau v,String carac,Partie part) throws Exception{
		List<Objet> objetListEquipe =InventairePeer.objetEquipe(part,v);
		List<Objet> objetListUtilise = InventairePeer.objetUtilise(part,v);
		int bonusEquipe=0;
		int bonusUtilise=0;
		List<Bonus> listBonus;
		for(Objet obj : objetListEquipe){
			listBonus = obj.getBonuss();
			for(Bonus bon : listBonus){
				if(bon.getCaracteristique()==carac){
					bonusEquipe += bon.getBonus();
				}
			}
		}
		
		for(Objet obj : objetListUtilise){
			listBonus = obj.getBonuss();
			for(Bonus bon : listBonus){
				if(bon.getCaracteristique()==carac){
					bonusUtilise += bon.getBonus();
				}
			}
		}
		return  bonusEquipe+bonusUtilise;
	}
}
